﻿#ifndef DERFORPASSWDPRODPANEL_H
#define DERFORPASSWDPRODPANEL_H

#include <appbase.h>

#include <QPointer>
#include <QWidget>
#include <QString>
#include <QMouseEvent>

namespace Ui {
class DerForPasswdProdPanel;
}

class DerForPasswdProdPanel : public QWidget
{
    Q_OBJECT

public:
    explicit DerForPasswdProdPanel(QWidget *parent = nullptr);
    ~DerForPasswdProdPanel();



private slots:
    /*
     * 第一、二标签页 . 刷新密码 按钮点击刷新密码
     * */
    void on_pusButOfRsetPasswd1_0_1_clicked();
    void on_pusButOfRsetPasswd2_0_1_clicked();

    /*
     * 用于倒计时事件的处理
     * */
    void slot_objTimerDJS_timeout();

    /*
     * 第一、二标签页的 复制 按钮 单击事件
     * 把文本框内容复制到剪贴板
     * */
    void on_pusButOfCopyPasswd1_1_1_clicked();
    void on_pusButOfCopyPasswd2_1_1_clicked();

    /*
     * 编辑第一、二标签页中间文本框时触发的事件
     * 停止倒计时，开始编辑字符串。
     * */
    void on_linEdOfCopyPasswd1_1_1_textEdited(const QString &arg1);
    void on_linEdOfCopyPasswd2_1_1_textEdited(const QString &arg1);

    /*
     * 第三标签页 十六进制选择事件
     * 选中则下面的特殊符号不可选。不选中下面的特殊符号则可选。
     * */
    void on_chBoxOfSelectedHex3_0_1_stateChanged(int arg1);

    /*
     * 第三标签页 特殊符号组 组选框选中的操作
     * 选中则十六进制复选框失去选中
     * */
    void on_groBOfDisPasswd3_0_1_clicked(bool checked);

    void on_pusButOfCreatePasswd3_0_1_clicked();

    /*
     * 第三标签页 密码长度合法性的判断。
     * 不合法 提示信息。并且 生产密码 按钮不可用。
     * */
    void on_linEdOfPasswdLenSet3_0_1_textChanged(const QString &arg1);

    /*
     * 清空剪贴板按钮 单击事件
     * */
    void on_pusButOfclipClear1_0_2_clicked();

private:
    Ui::DerForPasswdProdPanel *ui;

    // 程序基础配置对象
    AppBase* pAppBase = nullptr;

    // 用于记录标签页位置
    QString varCurrentTab = "0";

    // 倒计时用控件
    QPointer<QTimer> objTimDJS=nullptr;
    int varIntHearbeat; // 显示在 LCDNUMBER 上的数字
    int varFrontDelay;  // 在倒计时开始前停顿的时间。
    int varBackDelay;  // 在倒计时结束后停顿的事件。

    /*
     * 标签页单击事件
     * */
    void funSlotsOfTabBarClicked();

    /*
     * 第一、二标签页使用的密码生产模块
     * 用于驱动密码生产模块生产密码，直接赋值给控件
     * */
    void funVoidOfDisPasswd() const;

    /*
     * 第三标签页密码生产模块
     * 参数说明:
     *     a: 密码长度变量，最大支持到 2048长度
     * */
    void funVoidOfDisPasswdThird(const int &a) const;

    /*
     * 复制到系统剪贴板 / 清除系统剪贴板
     *
     * @参数说明:
     *     &str: 要复制到系统剪贴板的文本。
     *     &mod: 函数的工作模式。参数说明如下：
     *         1: 默认值。向系统剪贴板复制文本。
     *         2: 清空剪贴板。
     *
     * */
    void funVoidOfclipboard(const QString &str,const int &mod = 1) const;

    /*
     * 控件“样式”初始化函数
     * */
    void funVoidControlInitialize(DerForPasswdProdPanel *p=nullptr) const;

protected:
    /*
     * 重写事件过滤器
     * */
    bool eventFilter(QObject *obj, QEvent *event) override;
};

#endif // DERFORPASSWDPRODPANEL_H
